package com.java.java网络.exercise2;

import java.io.*;
import java.net.Socket;

/**
 * 客户端 - 字符流
 */
public class NetThreeC3 {
    public static void main(String[] args) throws IOException {
        // 思路
        // 1. 连接服务端（ip，端口）
        Socket socket = new Socket("192.168.0.124", 9999); // 连接这台主机的9999端口
        System.out.println("连接成功" + socket.getClass());
        // 2. 连接上返回Socket对象，得到和socket关联的输出流对象
        OutputStream outputStream = socket.getOutputStream();
        // 附加需要使用转换流，将字节转换为字符流OutputStreamWriter = outputStream -> Writer
        // 3. 获取输入流，读数据，并显示
//        outputStream.write("hello, server".getBytes());
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        bufferedWriter.write("hello, server-字符流");
        bufferedWriter.newLine(); // 换行，表示内容结束否则接收不到
        bufferedWriter.flush();// 需要手动刷新，不然不会发送 要求服务端使用readLIne方法接收
        // 设置结束标记 writer.readLIne方法会自动关闭流

        // 4.
        InputStream inputStream = socket.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String s = bufferedReader.readLine();//设置结束标记 readLIne方法会自动关闭流
        System.out.println(s);

        // 5.关闭流对象和socket, 必须关闭
        bufferedReader.close();// 关闭外层流
        bufferedWriter.close();
        socket.close();
        System.out.println("客户端退出...");
    }
}
